package com.company.search;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/guess-number-higher-or-lower/
 * @date 2019/11/14 15:00
 * 我们正在玩一个猜数字游戏。 游戏规则如下：
 * 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。
 * 每次你猜错了，我会告诉你这个数字是大了还是小了。
 * 你调用一个预先定义好的接口 guess(int num)，它会返回 3 个可能的结果（-1，1 或 0）：
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/guess-number-higher-or-lower
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class GuessNumber {

    public int guess(int n) {
        return 0;
    }

    public int guessNumber(int n) {
        int high = n;
        int low = 0;

        while (low <= high) {
            int middle = (low + high) /2;
            int guess = guess(middle);
            if (guess == 0) return middle;
            else if (guess == 1) {
                low = middle + 1;
            } else {
                high = middle - 1;
            }

        }

        return 0;
    }
}
